package lib

func init() {
	Probs = append(Probs, Problem{
		Num:         2789,
		Discription: "若nums[i]<=nums[i+1],两者可合并，求在操作允许范围内的最大值",
		Level:       2,
		Labels: map[string]int{
			"贪心": 1,
		},
	})
}

// 尽量创造出更多合并的机会
// 优先合并后边的，这样不影响和前面的合并
// so: 从后向前合并
//若在从后向前合并的过程中，碰到无法合并的情况，那此时任何操作都无法将nums[i]和nums[i+1]合并，接着往左走就行
func MaxArrayValue(nums []int) int64 {
	maxVal := nums[0]
	for i := len(nums) - 1; i >= 1; i-- {
		if nums[i] >= nums[i-1] {
			nums[i-1] += nums[i]
			maxVal = max(maxVal, nums[i-1])
		} else {
			maxVal = max(maxVal, nums[i])
		}
	}

	return int64(maxVal)
}